# ===========================================================
# 基础变量
# ===========================================================
BACKEND := backend
FRONTEND := frontend
PROD_CMD := $(BACKEND)/cmd/prod
PROD_WEB := $(PROD_CMD)/web
BUILD_DIR := build
APP_NAME := myapp

.PHONY: help install dev-front dev-back dev build clean

# ===========================================================
# 默认帮助
# ===========================================================
help:
	@echo "可用命令："
	@echo "  make install     安装前端和 Go 依赖"
	@echo "  make dev-front   启动前端开发服务器 (Vite)"
	@echo "  make dev-back    启动后端开发服务器"
	@echo "  make build       构建生产环境单文件可执行程序"
	@echo "  make clean       清理所有 .gitignore 排除项"

# ===========================================================
# 安装依赖
# ===========================================================
install:
	@echo "📥 安装前端依赖..."
	cd $(FRONTEND) && npm install
	@echo "📥 下载 Go 依赖..."
	cd $(BACKEND) && go mod tidy

# ===========================================================
# 开发环境：前端 / 后端
# ===========================================================
dev-front:
	@echo "🚀 启动前端开发服务器..."
	(cd $(FRONTEND) && npm run dev)

dev-back:
	@echo "🚀 启动后端开发服务器..."
	(cd $(BACKEND) && go run ./cmd/dev)


# ===========================================================
# 构建生产环境
# ===========================================================
build:
	@echo "🧹 清理旧构建..."
	rm -rf $(PROD_WEB) $(BUILD_DIR)

	@echo "📦 构建前端..."
	cd $(FRONTEND) && npm ci && npm run build

	@echo "📥 临时复制到 prod/web ..."
	cp -r $(FRONTEND)/dist $(PROD_WEB)

	@echo "🔨 构建 Go 后端..."
	cd $(BACKEND) && CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" -o ../$(BUILD_DIR)/$(APP_NAME) ./cmd/prod

	@echo "🧽 清理临时前端文件..."
	rm -rf $(PROD_WEB)

	@echo "🎉 构建完成 → $(BUILD_DIR)/$(APP_NAME)"

# ===========================================================
# 清理所有 .gitignore 排除项
# ===========================================================
clean:
	@echo "🧹 根据 .gitignore 清理项目排除项..."
	git clean -fdX
	@echo "✅ 清理完成"
